home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / lib / tex / inputs / fnpara.tex < prev    next >
Text File  |  1991-05-20  |  3KB  |  117 lines

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % FNPARA.TEX  based on D. E. Knuth's "Dirty Tricks" macros from pages
  3. % 398--400 of The TeXbook.
  4. % Dominik Wujastyk, September 15, 1988.
  5. %
  6. % Set the footnote text font here:
  7. %
  8. \font\footnotesize=cmr8
  9. %
  10. % Set the font for the footnote numbers at the bottom of the page here
  11. %
  12. \font\footnumberfont=cmbx8
  13. %
  14. % Set any text to follow each footnote here:
  15. %
  16. \def\endnotetext,$\parallel$\hskip.5em-
  17. %
  18. % Switch off above endnote text, for comparison:
  19. %
  20. \let\endnotetext=\relax
  21. %
  22. % Normal @-character macro lock:
  23. %
  24. \catcode`\@=11
  25. %
  26. % Initialize counters:
  27. %
  28. \newcount\footno
  29. \footno=0
  30. %
  31. % Clever code for \getfactor (The TeXbook, p.375):
  32. %
  33. ,\catcode`p=12 \catcode`t=12 \gdef\\#1pt,#1--
  34. \let\getfactor=\\
  35. %
  36. % Set space to follow footnote text:
  37. %
  38. \newskip\footglue \footglue=1em plus.3em minus.3em
  39. %
  40. % Set leading of footnotes:
  41. %
  42. \newdimen\footnotebaselineskip \footnotebaselineskip=10pt
  43. %
  44. % Calculate \fudgefactor (ratio of \baselineskip to \hsize):
  45. %
  46. \dimen0=\footnotebaselineskip \multiply\dimen0 by 1024
  47. \divide \dimen0 by \hsize \multiply\dimen0 by 64
  48. \xdef\fudgefactor,\expandafter\getfactor\the\dimen0 -
  49. %
  50. % Redefine footnotes to be automatically numbered:
  51. %
  52. \def\footnote,\global\advance\footno by 1
  53.   \let\@sf=\empty%
  54.   \ifhmode\edef\@sf,\spacefactor=\the\spacefactor-\/\fi%
  55. $N,\the\footno-$\@sf\vfootnote-
  56. \def\vfootnote#1,\insert\footins,\floatingpenalty=20000
  57.   \footnotesize \setbox0=\hbox,%
  58.     ,\footnumberfont \the\footno\penalty10000\hskip.5em-#1%
  59. \penalty-10\hskip\footglue\endnotetext-
  60.   \dp0=0pt \ht0=\fudgefactor\wd0 \box0--
  61. %
  62. % Assume \plainoutput routine, but change \pagecontents:
  63. %
  64. \def\pagecontents,\ifvoid\topins\else\unvbox\topins\fi
  65.   \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255
  66.   \ifvoid\footins\else % footnote info is present
  67.     \vskip\skip\footins
  68.     \footnoterule
  69.     \global\setbox1=\vbox,\makefootnoteparagraph-\unvbox1\fi
  70.   \ifr@ggedbottom \kern-\dimen@ \vfil \fi-
  71. \def\footnoterule,\kern-3\p@
  72.   \hrule width 2truein \kern 2.6\p@- % the \hrule is .4pt high
  73. %
  74. % Box manipulation code from The TeXbook, p.399:
  75. %
  76. \def\makefootnoteparagraph,\unvbox\footins \makehboxofhboxes
  77.   \setbox0=\hbox,\unhbox0 \removehboxes-
  78.   \baselineskip=\footnotebaselineskip\noindent\unhbox0\par -
  79. \def\makehboxofhboxes,\setbox0=\hbox,-
  80.   \loop\setbox2=\lastbox
  81.   \ifhbox2 \setbox0=\hbox,\box2\unhbox0-\repeat-
  82. \def\removehboxes,\setbox0=\lastbox
  83.   \ifhbox0,\removehboxes-\unhbox0 \fi-
  84. %
  85. % Reimpose @-lock.
  86. %
  87. \catcode`\@=12
  88. %
  89. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  90. %
  91. %Sample text:
  92. %
  93. \vsize 6in
  94. \voffset 2in
  95. \hsize 4in
  96. \hoffset 1in
  97.  
  98. The entire set of footnotes could be combined into a single paragraph, with
  99. generous spacing between the individual items. For example, the ten footnotes
  100. we have been considering might appear as follows:\footnote,First footnote.-
  101. And some more.\footnote,Second footnote. (Every once in a~while a long
  102.   footnote might occur, just to make things difficult.)-
  103. And some more.
  104. And some more.\footnote,Third footnote.-$N,$\footnote,Fourth footnote.-
  105. And some more.
  106. And some more.\footnote,Fifth footnote.
  107.   (This is incredibly boring, but it's just an
  108. example.)-$N,$\footnote,Another.-
  109. And some more.
  110. And some more.
  111. And some more.\footnote,And another.-$N,$\footnote,Ho
  112. hum.-$N,$\footnote,Umpteenth
  113. footnote.-$N,$\footnote,Oodles of them.-
  114.  
  115. \bye
  116. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  117.